﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MMessaging.MessagingEx.Common
{
	/// <summary>
	/// Wird geworfen, wenn eine Wartefunktion (WaitOnMessage..()) abgebrochen wird,
	/// weil entweder ein Timeout abläuft oder von außen der Thread terminiert wurde
	/// (z.B. Programmende)
	/// </summary>
	public class MWaitException : ApplicationException
	{
		#region public types

		public enum AbortReason
		{
			THREAD_CANCELED,
			TIMEOUT
		}

		#endregion

		#region public properties

		/// <summary>
		/// Abbruchgrund
		/// </summary>
		public AbortReason Reason { get; private set; }

		#endregion

		#region constructor

		public MWaitException(AbortReason reason, string message)
			: base(message)
		{
			Reason = reason;
		}

		#endregion
	}
}
